package com.google.gwt.sample.dynatablerf.shared;

import java.util.List;

import com.google.gwt.sample.dynatablerf.server.ServiceLocatorImp;
import com.google.gwt.sample.dynatablerf.server.business.ControladorCategoria;
import com.google.gwt.sample.dynatablerf.server.business.ControladorProduto;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.RequestFactory;
import com.google.web.bindery.requestfactory.shared.Service;

public interface AppRequestFactory extends RequestFactory {

	@Service(value = ControladorCategoria.class, locator = ServiceLocatorImp.class)
	interface CategoriaRequest extends RequestContext {
		Request<List<CategoriaProxy>> findAll(
				CategoriaQueryParamsProxy categoriaQueryParamsProxy,
				int startIndex, int maxResult);
	}

	@Service(value = ControladorProduto.class, locator = ServiceLocatorImp.class)
	interface ProdutoRequest extends RequestContext {
		Request<List<ProdutoProxy>> findAll(
				ProdutoQueryParamsProxy produtoQueryParamsProxy,
				int startIndex, int maxResult);

		Request<ProdutoProxy> persist(ProdutoProxy produto);
	}

	CategoriaRequest categoriaRequest();

	ProdutoRequest produtoRequest();

}
